/**
 * 录音处理器 - AudioWorkletProcessor 实现
 * 用于替代已弃用的 ScriptProcessorNode
 */
class RecorderProcessor extends AudioWorkletProcessor {
    constructor() {
        super();
        this.isRecording = true;
        
        // 处理来自主线程的消息
        this.port.onmessage = (event) => {
            if (event.data.command === 'setRecording') {
                this.isRecording = event.data.value;
            }
        };
    }
    
    /**
     * 处理音频数据
     * @param {Array} inputs 输入音频数据
     * @param {Array} outputs 输出音频数据
     * @param {Object} parameters 参数
     * @returns {boolean} 是否继续处理
     */
    process(inputs, outputs, parameters) {
        // 只有在录音状态下才处理数据
        if (this.isRecording && inputs[0] && inputs[0][0]) {
            const inputData = inputs[0][0];
            
            // 将数据发送到主线程（修改为与recorder.js中期望的格式匹配）
            this.port.postMessage({
                eventType: 'data',
                audioBuffer: inputData.slice()
            });
        }
        
        // 返回 true 表示继续处理
        return true;
    }
}

// 注册处理器
registerProcessor('recorder-processor', RecorderProcessor); 